Unzip the contents into the AddOns directory of your WoW game directory.
This is typically C:\Program Files\World of Warcraft\Interface\AddOns.
If you are upgrading the mod from a previous version, make sure to delete the old version prior to installing
the new version.
MSBT is designed to be an extremely lightweight, efficient, and highly configurable mod that makes it easier to see combat
information by scrolling the information on the screen in separate, dynamically creatable scroll areas. It is a replacement
for Blizzard's Floating Combat Text and Damage output.
Features:
- Lightweight and efficient design.
- Scroll incoming damage/heals, outgoing damage/heals, and notifications in separate configurable scroll areas on the playing field.
- Display cooldown completion alerts.
- Display loot alerts with a total of how many are now in inventory.
- Add triggers that will allow you to show notifications based on a variety of conditions.
- Assign a sound file to play for events/triggers.
- Dynamically create new scroll areas and assign any event/trigger to them.
- Customize the position, size, animation style, enabled state, font style, font size, font outline, and opacity for each of the scroll areas.
- Customize each individual event's color, font style, font size, font outline, opacity, output message, enabled state, and scroll area.
- Set "Master Font" settings that will be inherited by all of the scroll areas and the events in them unless they are overridden at the scroll area or event level.
- Merge AoE data into one event with cumulative damage/healing done with number of normal and crits specified.
- Show overhealing amounts against yourself or party/raid members.
- Color damage amounts according to damage type.
- Show partial effects (resists, absorbs, vulnerabilities, etc) colored according to type.
- Filter output information with a full suite of spam controls.
- Load on demand options.
- For mod developers:
-
Output your own scrolling messages with the MikSBT.DisplayMessage function instead of having
to create your own frame and animation code. You can also use your own font by first registering
it with MSBT via the MikSBT.RegisterFont function.
- Create custom animation styles.
- See the included API.html file for reference information.
Supported Events:
- Incoming:
- Melee Damage, Misses, Dodges, Parries, Blocks, Absorbs, and Immunes
- Skill Damage, Damage Over Time (DoTs), Misses, Dodges, Parries, Blocks, Absorbs, Immunes, Reflects, and Interrupts
- Spell Resists
- Pet Melee Damage, Misses, Dodges, Parries, Blocks, Absorbs, and Immunes
- Pet Skill Damage, Damage Over Time (DoTs), Misses, Dodges, Parries, Blocks, Absorbs, and Immunes
- Pet Spell Resists
- Heals and Heals Over Time (HoTs)
- Environmental Damage
- Outgoing:
- Melee Damage, Misses, Dodges, Parries, Blocks, Absorbs, Immunes, Evades
- Skill Damage, Damage Over Time (DoTs), Misses, Dodges, Parries, Blocks, Absorbs, Immunes, Reflects, Interrupts, and Evades
- Spell Resists and Buff Dispels
- Heals and Heals Over Time (HoTs)
- Pet Melee Damage, Misses, Dodges, Parries, Blocks, Absorbs, Immunes, and Evades
- Pet Skill Damage, Damage Over Time (DoTs), Misses, Dodges, Parries, Blocks, Absorbs, Immunes, and Evades
- Pet Spell Resists and Buff Dispels
- Notification:
- Buffs / Buff Stacks / Buff Fades
- Debuffs / Debuff Stacks / Debuff Fades
- Item Buffs / Item Buff Fades
- Enter/Leave Combat
- Power Gains and Losses
- Combo Point Gains
- Combo Points Full
- Honor Gains
- Reputation Gains and Losses
- Skill Gains
- Experience Gains
- Killing Blows (Player and NPC)
- Extra Attacks
- Soul Shard Creation
- Enemy Buff Gains
- Monster Emotes
- Cooldown Completions
- Loot:
- Default Triggers:
- All Relevant Classes - Low Health, Low Mana, Low Pet Health, Viper Sting
- Death Knight - Rime, Rune Strike
- Druid - Clearcasting, Eclipse, Owlkin Frenzy
- Hunter - Counterattack, Kill Shot
- Mage - Brain Freeze, Clearcasting, Fingers of Frost, Frostbite, Hot Streak, Impact, Missile Barrage
- Paladin - Hammer of Wrath, The Art of War
- Priest - Clearcasting
- Rogue - Riposte
- Shaman - Clearcasting, Maelstrom Weapon x5, Tidal Waves
- Warlock - Backlash, Eradication, Molten Core, Nightfall
- Warrior - Bloodsurge, Execute, Overpower, Rampage, Revenge, Sudden Death, Taste for Blood, Victory Rush
The trigger system is a powerful and flexible system that allows you to specify custom events to be displayed based on
specific game events that are not already handled by default. There are several mechanisms in place to ensure triggers are efficient as
possible so they are not needlessly wasting CPU cycles checking conditions that aren't relevant. Due to this optimization, several common
triggers are included by default.
Every time almost anything happens in the game, a combat log entry is generated for it. While it is not readily visible, each of these
combat log entries is categorized by Blizzard according to specific event types. It is these event types that drive triggers. Triggers are
really just definitions of a specific set of circumstances that must occur before they will fire.
Aside from being categorized into an event type, each event that occurs in game has several other pieces of information associated with it such as
who the source of the event was, how much the event hit or healed for, and whether or not the event was a crit. Obviously this additional information
varies according to the type of event it is since, for example, an aura application can't crit.
The trigger system refers to these event types as
main events and the additional pieces of information as
conditions, since ultimately it is these additional pieces of information that define the specific
circumstances of interest.
Let's consider an example event to better understand how the pieces fit together. Assume that you were just hit by a fireball. The damage caused
to you by the fireball generated an event of type "Skill Damage". The event also has many of other pieces of information associated with it like
the name of the unit who cast the fireball, how much the fireball hit you for, whether or not it crit, whether the unit who cast the fireball is a
player or an NPC, etc.
Putting the above fireball example in terms of the trigger system, the fireball hitting you was a
main event of type
"Skill Damage", and the
conditions were the name of the unit who cast the fireball, how much it hit you for, and so on.
While the
main events and their
conditions offer a wealth the information, there is other non-event
related "state" information available such as the current zone your character is in, whether or not certain buffs are active, and whether or not certain skills are
available. This "state" information forms the basis for what the trigger system refers to as
exceptions. An
exception will prevent a trigger from being displayed when it applies.
Now that it is clear what
main events,
conditions, and
exceptions
are, we can explore how triggers make use of them and consequently how they are defined.
The following list summarizes the stages a trigger follows to determine whether or not it fires:
- One of the main events that a trigger has defined occurs.
-
The specific conditions defined for the main event for the trigger are tested. If any of the
conditions do not apply, the trigger will not fire and all processing for the trigger stops.
-
The exceptions defined for the trigger are tested. If any of the exceptions apply, the trigger will not fire and all
processing for the trigger stops.
- The trigger fires thus displaying the specified output message and event settings.
As mentioned in the "
Basic Concepts" section above, triggers are driven by
main events.
Each trigger can be based on one or more of these
main events each with unique
conditions.
These
main events are treated as an "or" relationship meaning that when
ANY one of them occurs, the trigger will move to the next
stage of testing the
conditions.
The
conditions defined for a given
main event are treated as an "and" relationship meaning that
ALL of them must be true for the trigger to move to the next stage of testing
exceptions.
During the final stage, the
exceptions defined for a trigger are treated as an "or" relationship meaning that when
ANY one
of them is true, the trigger will not fire.
Most common triggers won't need to delve into any of the concepts presented in this section, but using some of the more advanced capabilities
can lead to triggers for highly complex events or single triggers capable of handling multiple events.
Here is an overview of the main points that will be covered:
- Each main event can be used multiple times for a single trigger
- Each condition can be used multiple times for a given main event.
- Triggers will try to choose an appropriate icon based on the main event that fired it.
- Substitution codes for skill names are available.
- Skill IDs can be used to discern which rank of a skill was used.
Recall from the "
Trigger Mechanics" section that each trigger can have multiple
main events treated
as an "or" relationship, and that each
main event can have its own unique
conditions. Combining that
with the capability to use a
main event multiple times for a single trigger means you can effectively cover a set of common
scenarios all with a single trigger. For example, imagine you want to see when both Mace Stun and Improved Hamstring proc. Both cases are an aura application,
but they have different skill names. By adding the same
main event twice, but specifying a different skill name
condition for each one, you are effectively saying when Mace Stun or Improved Hamstring proc this trigger should fire. Naturally
the other
conditions such as affiliation and reaction would need to also be set for each event.
The astute reader will say "Wait a second! How will I be able to tell which one procced if the output message is the same?". This problem is solved with substitution
codes. Depending on which event actually caused the trigger to fire, %s will be replaced the appropriate skill name. Also, the correct icon would be displayed since
triggers attempt to choose an appropriate icon based on the
main event that fired them.
The capability of using the same condition multiple times for a given
main event with different relationships means that things such as ranges
and complex pattern matching can be implemented. For example, imagine you are trying to create a trigger that will fire when an amount is between two values. The first
condition could be "Amount - Is Greater Than - X" and the second could be "Amount - Is Less Than - Y".
Another advanced capability is using skill IDs to detect when specific ranks, such as rank 1, are being used. Most online databases can be used to ascertain
what the skill ID is for the ranks of each skill. By adding
conditions that specify these specific skill IDs, it is possible
to only trigger on specific skill ranks.
Since the point of the trigger system is to allow for custom events that are not already available, there is no way to cover all of the possibilities.
However, most commonly requested triggers fall within the following categories. An example trigger or two for each category is provided and can be
used as a guide to creating your desired trigger.
Please note these examples don't make use of advanced capabilities in order to keep the examples easy to
understand.
CC Breaks: |
A common request for triggers is to be notified when crowd control skills like sheep, sap, and blind break from your focus target while in the arena.
Nearly all of these effects involve removing an aura and therefore the main event type will usually be "Aura Removal".
The most common conditions used for this category of triggers are "Skill Name", "Recipient Unit Affiliation", and
"Recipient Unit Reaction".
Polymorph Broke
Output Message: Poly Broke - %r!
Main Events:
Aura Removal
Skill Name - Is Equal To - Polymorph
Recipient Unit Affiliation - Is Equal To - Focus
Recipient Unit Reaction - Is Equal To - Hostile
Exceptions:
Zone Type - Is Not Equal To - Arena
|
Procs: |
Another common request for triggers is to be notified when certain procs such as Mace Stun, Improved Wing Clip, or item-based haste effects occur.
Nearly all of the effects apply an aura of some sort and as such the main event type will usually be "Aura Application".
The most common conditions used for this category of triggers are "Skill Name", "Recipient Unit Affiliation", and
"Recipient Unit Reaction".
Mace Stun
Output Message: Mace Stun!
Main Events:
Aura Application
Skill Name - Is Equal To - Mace Stun Effect
Recipient Unit Affiliation - Is Equal To - Target
Recipient Unit Reaction - Is Equal To - Hostile
Exceptions:
None
Focus (from Mystical Skyfire Diamond)
Output Message: Focus!
Main Events:
Aura Application
Skill Name - Is Equal To - Focus
Recipient Unit Affiliation - Is Equal To - You
Exceptions:
None
|
Key Skill Usage: |
Many players find it useful to create a trigger for when certain key abilities such as Blessing of Freedom or Blessing of Protection are used while
in the arena. Most of these effects involve successfully casting a spell and so the main event type will usually be "Cast Success".
The most common conditions used for this category of triggers are "Skill Name" and "Source Unit Reaction".
Blessing of Protection Used
Output Message: Melee Bubble!
Main Events:
Cast Success
Skill Name - Is Equal To - Blessing of Protection
Source Unit Reaction - Is Equal To - Hostile
Exceptions:
Zone Type - Is Not Equal To - Arena
Priest Fear Used
Output Message: Priest Fear Down!
Main Events:
Cast Success
Skill Name - Is Equal To - Psychic Scream
Source Unit Reaction - Is Equal To - Hostile
Exceptions:
Zone Type - Is Not Equal To - Arena
|
This section provides a reference for each of the
main events,
conditions,
and
exceptions that triggers may utilize.
The following is a description of the fields unique to the trigger system interface:
Output Message: |
This is the message that will be displayed when the trigger fires.
Most main events allow the following substitution codes:
- %n - The name of the source of the event.
- %r - The name of the recipient of the event.
- %a - The amount associated with the event.
- %s - The skill name associated with the event.
In addition, certain main events that involve two different skill names like dispels (the name of skill performing the dispel and
the name of the skill being dispelled) allow the following substitution code:
- %e - The extra skill name associated with the event.
|
Trigger Classes: |
This allows you to set the classes that you want the trigger to apply to. NOTE: THIS IS YOUR
CLASS NOT THE TARGET CLASS. You may look at the Execute trigger for an example. Since Warrior is
selected, the trigger will only apply when you are playing on a warrior.
|
Main Events: |
This allows you to define which main events should begin the process of testing the trigger. When ANY
(or relationship) of these main events occur and their conditions are true, the trigger will then make sure
none of the exceptions are true before firing.
The main events reference table details the purpose of each event.
|
Trigger Exceptions: |
This allows you define exceptions to prevent the trigger from firing.
They are only checked if one of the main events has occurred and all its conditions are true.
The trigger exceptions reference table below details the purpose of each exception.
|
Aura Application: |
Fired when an aura is applied to a unit. |
Aura Dispel: |
Fired when an aura is dispelled from a unit. |
Aura Removal: |
Fired when an aura is removed from a unit. |
Aura Stolen: |
Fired when an aura is stolen from a unit. |
Cast Failure: |
Fired when a cast fails. |
Cast Start: |
Fired when a cast begins. |
Cast Success: |
Fired when a cast successfully completes. |
Create: |
Fired when items are created. This is typically for conjured items. |
Damage Shield Damage: |
Fired when damage is done from a damage shield like thorns. |
Damage Shield Miss: |
Fired when damage from a damage shield like thorns is resisted, absorbed, etc. |
Dispel Failed: |
Fired when a dispel attempt fails. |
Enchant Application: |
Fired when an enchant is applied to an item. |
Energy Change: |
Fired when an energy value changes for the one of the supported units. |
Environmental Damage: |
Fired when damage is done as the result of an environmental effect like falling and drowning. |
Extra Attacks: |
Fired when extra attacks occur from abilities like Windfury. |
Heal: |
Fired when a unit is healed. |
Health Change: |
Fired when a health value changes for one of the supported units. |
Killing Blow: |
Fired when a unit gets a killing blow. |
Mana Change: |
Fired when a mana value changes for one of the supported units. |
Periodic Skill Damage (DoT): |
Fired when damage from a periodic source is done. |
Periodic Skill Miss: |
Fired when damage from a periodic source is resisted, absorbed, etc. |
Periodic Heal (HoT): |
Fired when a unit is healed by a periodic source. |
Periodic Power Drain: |
Fired when power is drained as the result of a periodic source. |
Periodic Power Gain: |
Fired when power is gained from a periodic source. |
Periodic Power Leech: |
Fired when power is leeched as the result of a periodic source. |
Power Drain: |
Fired when power is drained from a unit. |
Power Gain: |
Fired when power is gained by a unit. |
Power Leech: |
Fired when power is leeched from a unit. |
Rage Change: |
Fired when a rage value changes for one of the supported units. |
Range Damage: |
Fired when damage from a ranged source like wands/bows is done. |
Range Miss: |
Fired when damage from a ranged source like wands/bows is dodged, absorbed, etc. |
Skill Cooldown Complete: |
Fired when a skill cooldown completes. |
Skill Damage: |
Fired when damage from a skill was done to a unit. |
Skill Interrupt: |
Fired when a skill is interrupted (not pushed back). |
Skill Miss: |
Fired when damage from a skill is resisted, absorbed, etc. |
Split Damage: |
Fired when damage is being split between the source and recipient units. |
Swing Damage: |
Fired when damage from normal melee swings is done to a unit. |
Swing/Range/Skill Damage: |
Fired when any form of non-periodic damage is done to a unit. |
Swing Miss: |
Fired when damage from normal melee swings is dodged, absorbed, etc. |
Swing/Range/Skill Miss: |
Fired when any form of non-periodic damage is dodged, resisted, absorbed, etc. |
Summon: |
Fired when a creature is summoned. |
Unit Death: |
Fired when a unit dies. |
Unit Destroy: |
Fired when a mechanical unit is destroyed. |
Absorb Amount: |
The amount of damage absorbed. |
Amount: |
The amount of damage, health, power, etc generated by the event. |
Aura Type: |
The type of aura (buff, debuff) generated by the event. |
Block Amount: |
The amount of damage blocked. |
Crit: |
Whether or not the event is a critical event. |
Crushing Blow: |
Whether or not the hit was a crushing blow. |
Damage Type: |
The type of damage (arcane, fire, holy, etc) associated with the event. |
Extra Amount: |
Secondary amount used for events that have more than one amount value. |
Extra Skill ID: |
The ID of the secondary skill associated with the event. |
Extra Skill Name: |
The name of the secondary skill associated with the event. |
Extra Skill School: |
The school (arcane, fire, holy, etc) of the secondary skill associated with the event. |
Glancing Hit: |
Whether or not the hit was a glancing hit. |
Hazard Type: |
The type of hazard (falling, drowning, etc) that caused environmental damage. |
Miss Type: |
The type of miss (block, dodge, parry, resist, etc) that occurred. |
Power Type: |
The type of power (energy, mana, rage, etc) that was affected. |
Recipient Unit Affiliation: |
The affiliation (mine, target, focus, you, party member, etc) of the unit that was the recipient of the event. |
Recipient Unit Control: |
The controlling mechanism (server, human) of the unit that was the recipient of the event. |
Recipient Unit Name: |
The name of the unit that was the recipient of the event. |
Recipient Unit Reaction: |
The reaction (hostile, friendly, neutral) of the unit that was the recipient of the event. |
Recipient Unit Type: |
The type of the unit (player, pet, NPC, etc) that was the recipient of the event. |
Resist Amount: |
The amount of damage resisted. |
Skill ID: |
The ID of the skill associated with the event. |
Skill Name: |
The name of the skill associated with the event. |
Skill School: |
The school (arcane, fire, holy etc) of the skill associated with the event. |
Source Unit Affiliation: |
The affiliation (mine, target, focus, you, party member, etc) of the unit that was the source of the event. |
Source Unit Control: |
The controlling mechanism (server, human) of the unit that was the source of the event. |
Source Unit Name: |
The name of the unit that was the source of the event. |
Source Unit Reaction: |
The reaction (hostile, friendly, neutral) of the unit that was the source of the event. |
Source Unit Type: |
The type of the unit (player, pet, NPC, etc) that was the source of the event. |
Threshold: |
Percentage value that must be crossed when dealing with changes in energy, health, mana, etc. |
Unit ID: |
The ID of the unit affected. Use this condition to test specific units for changes in energy, health, mana, etc. |
Unit Reaction: |
The reaction of the unit affected by changes in energy, health, mana, etc. |
Active Talents: |
Examines if the specified talent group is currently active. |
Buff Active: |
Examines if the specified buff is currently active on you. |
Current Combo Points: |
The current number of combo points you have. |
Current Power: |
The current amount of power you have. |
Trigger Recently Fired: |
The number of seconds since the last time the trigger fired. |
Trivial Target: |
Examines if the current target is trivial (grey). |
Unavailable Skill: |
Examines if the specified skill is unknown or on cooldown. It does not cover other facets such as necessary reagents,
appropriate range, etc.
|
Warrior Stance: |
The current stance your warrior is in. Only works correctly if you are playing a warrior. |
Zone Name: |
The zone you are currently in. |
Zone Type: |
The type of zone you are currently in. |
Here is the official lua reference for patterns:
Character Class:
A
character class is used to represent a set of characters. The following combinations are allowed in describing a character class:
- x: (where x is not one of the magic characters ^$()%.[]*+-?) represents the character x itself.
- .: (a dot) represents all characters.
- %a: represents all letters.
- %c: represents all control characters.
- %d: represents all digits.
- %l: represents all lowercase letters.
- %p: represents all punctuation characters.
- %s: represents all space characters.
- %u: represents all uppercase letters.
- %w: represents all alphanumeric characters.
- %x: represents all hexadecimal digits.
- %z: represents the character with representation 0.
-
%x: (where x is any non-alphanumeric character) represents the character x. This is the standard way to escape the magic characters. Any punctuation character (even the non magic)
can be preceded by a '%' when used to represent itself in a pattern.
-
[set]: represents the class which is the union of all characters in set. A range of characters may be specified by separating the end characters of the range with a '-'. All classes
%x described above may also be used as components in set. All other characters in set represent themselves. For example, [%w_] (or [_%w]) represents all alphanumeric characters plus
the underscore, [0-7] represents the octal digits, and [0-7%l%-] represents the octal digits plus the lowercase letters plus the '-' character.
The interaction between ranges and classes is not defined. Therefore, patterns like [%a-z] or [a-%%] have no meaning.
- [^set]: represents the complement of set, where set is interpreted as above.
For all classes represented by single letters (%a, %c, etc.), the corresponding uppercase letter represents the complement of the class. For instance, %S represents all non-space characters.
The definitions of letter, space, and other character groups depend on the current locale. In particular, the class [a-z] may not be equivalent to %l.
Pattern Item:
A pattern item may be:
- a single character class, which matches any single character in the class;
- a single character class followed by '*', which matches 0 or more repetitions of characters in the class. These repetition items will always match the longest possible sequence;
- a single character class followed by '+', which matches 1 or more repetitions of characters in the class. These repetition items will always match the longest possible sequence;
- a single character class followed by '-', which also matches 0 or more repetitions of characters in the class. Unlike '*', these repetition items will always match the shortest possible sequence;
- a single character class followed by '?', which matches 0 or 1 occurrence of a character in the class;
- %n, for n between 1 and 9; such item matches a substring equal to the n-th captured string (see below);
-
%bxy, where x and y are two distinct characters; such item matches strings that start with x, end with y, and where the x and y are balanced. This means that, if one reads the string from left to right,
counting +1 for an x and -1 for a y, the ending y is the first y where the count reaches 0. For instance, the item %b() matches expressions with balanced parentheses.
Pattern:
A pattern is a sequence of pattern items. A '^' at the beginning of a pattern anchors the match at the beginning of the subject string. A '$' at the end of a pattern anchors the match at the end of the subject string.
At other positions, '^' and '$' have no special meaning and represent themselves.
Captures:
A pattern may contain sub-patterns enclosed in parentheses; they describe captures. When a match succeeds, the substrings of the subject string that match captures are stored (captured) for future use. Captures are numbered
according to their left parentheses. For instance, in the pattern "(a*(.)%w(%s*))", the part of the string matching "a*(.)%w(%s*)" is stored as the first capture (and therefore has number 1); the character matching "." is
captured with number 2, and the part matching "%s*" has number 3.
As a special case, the empty capture () captures the current string position (a number). For instance, if we apply the pattern "()aa()" on the string "flaaap", there will be two captures: 3 and 5.